How HySoP deals with computational graphs of operators¶
HySoP library is designed for the user to manipulate only operators
and problems. It internally build a directed graph of operators (low level
computations or data operations) for running a single a solver
iteration. Therefore, solving a Problem means running iteratively the
graph traversal. Order of inserting elements in the Problem using
insert()
(or graph using push_nodes()
)
is important.
Two kind of object can be inserted into a graph:
a
ComputationalGraphNode
by means of:an operator (
ComputationalGraphOperator
)a sub-graph (
ComputationalGraph
) when using a operator of operators
an operator generator (
ComputationalGraphNodeGenerator
orComputationalGraphNodeFrontend
). In that case, only generated operators are inserted into graph, the generator itself is not inserted.
We distinguish directional operators from operators. Directional
operators must split into several operators (at least one per spatial
directions) using a DirectionalSplitting
. The nested
operators are sharing a common basis:
DirectionalOperatorBase
that are generated by DirectionalOperatorGenerator
. Directional operators generators will automatically insert also
transposition operators (see Temporary work arays in HySoP).